/*@author: Ana Rebollo Pin
 * 
 */
package com.bonshotels.DomainLayer.CtrlDades;

import java.util.Set;

import com.bonshotels.DomainLayer.DomainModel.Habitacio;
import com.bonshotels.Excepcions.HabitacioNoExisteix;

	/**
	 * Interface CtrlHAbitacio.
	 * 
	 * Utilitzem aquesta interface per demanar a la capa de dades els objectes de 
	 * tipus Habitacio.
	 * Utilitzem una interficie per evitar lacoblament entre la capa de dades, on 
	 * realment estaran implementats els metodes, i la capa de domini. 
	 * Aquesta classe es un producte abstracte dins del patro factoria abstracta.
	 */
public interface ICtrlHabitacio {
	/**
     * Obte de la base de dades lobjecte Habitacio que sindentifica
     * per el nom de lhotel i el numero, els quals rebra com ha parametre.
     * 
     * @param hotel nom del hotel que sutilitza com a part de la clau primaria 
     * composta per identificar lobjecte de la clase Habitacio.
     * @param numHabitacio numero de lhabitacio que sutilitza com a part de la clau primaria
     * composta per identificar lobjecte de la clase Habitacio.
     * 
     * @return lobjecte Habitacio que sobte de la capa de dades amb 
     * clau primaria composta per nomHotel i numero. 
     */
	public abstract Habitacio obte(int numHabitacio, String hotel) throws HabitacioNoExisteix;
	
	/**
	 * Consulta a la base de dades si lobjecte Habitacio existeix,
	 * Habitacio sindetifica per el nom del hotel on es troba i el numero de 
	 * habitacio, per aixo es necesaria que la operacio els rebi com a parametres
	 *
	 * @param hotel nom del  hotel que forma part de la clau primaria de
	 * habitacio
	 * @param numHabitacio numero de la habitacio que forma part de la clau primaria de
	 * habitacio
	 * 
	 * @return retorna cert si la Habitacio amb numero i nom de hotel identics
	 * als passats com a parametre ja existien al base de dades i fals en cas contrari
	 */
	public abstract boolean existeix(int numHabitacio, String hotel);
	
	/**
	 * Retorna totes les instancies de Habitacio existent a la base de dades
	 *
	 * @return conjunt de habitacions de la bd.
	 */
	public abstract Set<Habitacio> obteTots();
}
